package Search;

import java.util.Arrays;

public class LeetCode1011 {
    public int shipWithinDays(int[] weights, int days) {
        int l = Arrays.stream(weights).max().getAsInt(),r = Arrays.stream(weights).sum();
        while (l < r){
            int mid = l + (r - l)  / 2;
            if (days(weights,mid) <= days){
                r = mid;
            } else {
                l = mid + 1;
            }
        }
        return l;
    }

    private int days(int[] weights,int k){
        int days = 1;
        int sum = 0;
        for (int i = 0; i < weights.length; i++) {
            if (sum + weights[i] > k) {
                days++;
                sum = 0;
            }
            sum += weights[i];
        }
        return days;
    }
}
/*
传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。

传送带上的第 i 个包裹的重量为 weights[i]。每一天，我们都会按给出重量（weights）的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。

返回能在 days 天内将传送带上的所有包裹送达的船的最低运载能力。

 
 */
